package com.hsy.swu.home.leftdrawer

import android.annotation.SuppressLint
import android.os.Bundle
import android.view.Gravity
import androidx.annotation.DrawableRes
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.appcompat.widget.LinearLayoutCompat
import com.google.android.material.internal.ViewUtils.dpToPx
import com.hsy.swu.R
import com.hsy.swu.databinding.ActivityQuestionBinding
import com.hsy.swu.hsyutils.HsyActivity
import com.hsy.swu.hsyutils.HsyViewModel
import com.hsy.swu.hsyutils.setFont
import com.hsy.swu.widget.goToSystemPermissionSetting

class QuestionActivity : HsyActivity<ActivityQuestionBinding, HsyViewModel>() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mBinding.linearLayoutCompat.apply {
            addQA(
                "打开了课程提醒为什么在上课前收不到通知推送？",
                null,
                "要收到通知推送需要到系统设置中的通知管理中打开 帮帮通 的通知权限。\n\t\t\t建议打开锁屏通知与横幅通知（有些机型称为气泡通知）以获得及时的上课提醒。",
                "点此跳转到设置通知管理",
                true
            ) { goToSystemPermissionSetting() }
            addQA(
                "如何关掉课程提醒？",
                null,
                "如果只想关掉横幅通知但是想保留桌面显示课程面板，关掉通知权限就好。\n\t\t\t如果桌面显示课程面板也想关掉，直接长按移除，之后就不再有横幅提示了。"
            )
            addQA(
                "为什么有时候点击刷新之后要很久才有结果？",
                null,
                "开学、期末、选课等期间，校园网访问量可能较大，响应速度会变慢；\n\t\t\t寒暑假期间校园网响应速度会变慢。"
            )
            addQA(
                "关于 App 报毒",
                R.drawable.virus,
                "由于此 App 属于个人开发，未备案，可能会被系统检测出不合规，如果担心请果断卸载此 App。\n\n郑重声明：以上图片中所列举的违规行为，此 App 一项都没有，开发者本人是信管专业的学生，不会盗取您的任何隐私。"
            )

            addBottomMarginView()
            setFont()
        }
    }

    @SuppressLint("RestrictedApi")
    private fun LinearLayoutCompat.addQA(
        question: String,
        @DrawableRes exampleImgResId: Int? = null,
        answer: String,
        actionTip: String = "",
        isFirst: Boolean = false,
        action: () -> Unit = {}
    ) {
        // 基础 QA
        val tvQuestion = AppCompatTextView(context).apply {
            text = "Q: $question"
            setTextColor(resources.getColor(R.color.black))
            textSize = 16f
            layoutParams = LinearLayoutCompat.LayoutParams(
                LinearLayoutCompat.LayoutParams.MATCH_PARENT,
                LinearLayoutCompat.LayoutParams.WRAP_CONTENT
            ).apply {
                setMargins(
                    dpToPx(context, 10).toInt(),
                    if (isFirst) 0 else dpToPx(context, 50).toInt(),
                    dpToPx(context, 10).toInt(),
                    0
                )
            }
        }
        val tvAnswer = AppCompatTextView(context).apply {
            text = "A: $answer"
            setTextColor(resources.getColor(R.color.blue))
            textSize = 12f
            lineHeight = 60
            letterSpacing = 0.05f
            layoutParams = LinearLayoutCompat.LayoutParams(
                LinearLayoutCompat.LayoutParams.MATCH_PARENT,
                LinearLayoutCompat.LayoutParams.WRAP_CONTENT
            ).apply {
                setMargins(
                    dpToPx(context, 30).toInt(),
                    dpToPx(context, 5).toInt(),
                    dpToPx(context, 30).toInt(),
                    0
                )
            }
        }
        addView(tvQuestion)

        // 图片
        if (exampleImgResId != null) {
            val iv = AppCompatImageView(context).apply {
                setImageResource(exampleImgResId)
                gravity = Gravity.CENTER
                layoutParams = LinearLayoutCompat.LayoutParams(
                    dpToPx(context, 300).toInt(),
                    dpToPx(context, 300).toInt()
                ).apply {
                    setMargins(
                        dpToPx(context, 20).toInt(),
                        0,
                        dpToPx(context, 20).toInt(),
                        0
                    )
                }
            }
            addView(iv)
        }

        addView(tvAnswer)

        // 更多设置提示
        if (actionTip.isNotEmpty() && action != {}) {
            val tvActionTip = AppCompatTextView(context).apply {
                text = actionTip
                setTextColor(resources.getColor(R.color.red))
                textSize = 14f
                gravity = Gravity.CENTER
                layoutParams = LinearLayoutCompat.LayoutParams(
                    LinearLayoutCompat.LayoutParams.MATCH_PARENT,
                    LinearLayoutCompat.LayoutParams.WRAP_CONTENT
                ).apply {
                    setMargins(
                        dpToPx(context, 20).toInt(),
                        dpToPx(context, 20).toInt(),
                        dpToPx(context, 20).toInt(),
                        0
                    )
                }
                setOnClickListener {
                    action()
                }
            }
            addView(tvActionTip)
        }

        setFont()
    }

    @SuppressLint("RestrictedApi")
    private fun LinearLayoutCompat.addBottomMarginView() {
        addView(AppCompatTextView(context).apply {
            layoutParams = LinearLayoutCompat.LayoutParams(
                LinearLayoutCompat.LayoutParams.MATCH_PARENT,
                LinearLayoutCompat.LayoutParams.WRAP_CONTENT
            ).apply {
                setMargins(0, 0, 0, dpToPx(context, 100).toInt())
            }
        })
    }
}